home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / 3DTOSHI2.ZIP / mpg3d / source / lg3dmatm.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-26  |  1.0 KB  |  52 lines

  1.  
  2. // lg3dmatm.cpp
  3. //
  4. // Copyright (c) 1996 by Toshiaki Tsuji, all rights reserved.
  5.  
  6. #include "stdgfx.h"
  7. #include "lg3dmat.h"
  8.  
  9. // VOID _FLPMultMatrix ( G3DMATRIX Mat1, G3DMATRIX Mat2, G3DMATRIX Result )
  10. //
  11. // EAX = Mat1, EDX = Mat2, EBX = Result
  12.  
  13. VOID _FLPMultMatrix ( G3DMATRIX Mat1, G3DMATRIX Mat2, G3DMATRIX Result )
  14. {
  15. _asm {
  16.   pushad
  17.  
  18.   mov  EAX, Mat1
  19.   mov  EDX, Mat2
  20.   mov  EBX, Result
  21.   mov  ECX, 4
  22.  
  23.   MatrixLoopOut :
  24.     mov  ESI, 4
  25.     mov  EDI, EDX
  26.     MatrixLoopIn :
  27.       fld  dword ptr [EAX]
  28.       fmul dword ptr [EDX]
  29.       fld  dword ptr [EAX+1*4]
  30.       fmul dword ptr [EDX+4*4]
  31.       fld  dword ptr [EAX+2*4]
  32.       fmul dword ptr [EDX+8*4]
  33.       fld  dword ptr [EAX+3*4]
  34.       fmul dword ptr [EDX+12*4]
  35.       faddp st(1), st
  36.       faddp st(1), st
  37.       faddp st(1), st
  38.       add  EDX, 4
  39.       add  EBX, 4
  40.       fstp  dword ptr [EBX-4]
  41.       dec  ESI
  42.       jnz  MatrixLoopIn
  43.  
  44.     mov  EDX, EDI
  45.     add  EAX, 4*4
  46.     Loop MatrixLoopOut
  47.  
  48.   popad
  49. } // End asm
  50. } // End of _FLPMultMatrix
  51.  
  52.